package com.itlong.cloud.operate.dao;

import com.itlong.cloud.POJO.PO.UiInfoPO;
import com.itlong.cloud.POJO.PO.UiProjectInfoPO;
import com.itlong.cloud.POJO.VO.operate.OperateProjectInfoVO;
import com.itlong.cloud.POJO.VO.operate.OperateUiInfoGetOneVO;
import com.itlong.cloud.POJO.VO.operate.OperateUiInfoGetPageVO;
import com.itlong.cloud.POJO.VO.operate.OperateUiProjectInfoVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      运营-UI管理操作数据库接口。
 * <desc/>
 *
 * @createDate 2018-03-20.
 */
@Mapper
@Repository
public interface IOperateUiManageDao {

    /**
     * <desc>
     *      保存UI信息。
     * <desc/>
     *
     * @param  params
     * @return
     * @author shengen.T
     * @createDate 2018-03-20
     */
    Integer saveUiInfo(Map<String,Object> params);

    /**
     * <desc>
     *      保存UI和项目的对应关系。
     * <desc/>
     *
     * @param  uiProjectInfoPOList
     * @return
     * @author shengen.T
     * @createDate 2018-03-20
     */
    Integer saveUiProjectRelation(@Param("uiProjectInfoPOList") List<UiProjectInfoPO> uiProjectInfoPOList);

    /**
     * <desc>
     *      更新UI信息。
     * <desc/>
     *
     * @param  params
     * @return
     * @author shengen.T
     * @createDate 2018-03-20
     */
    Integer updateUiInfo(Map<String,Object> params);

    /**
     * <desc>
     *      批量删除对用关系表。
     * <desc/>
     *
     * @param uiIdList
     * @return
     * @author shengen.T
     * @createDate 2018-03-21
     */
    Integer delUiProjectRelation(@Param("uiIdList") String[] uiIdList);

    /**
     * <desc>
     *      更新UI状态。
     * <desc/>
     *
     * @param  uiIdList
     * @return
     * @author shengen.T
     * @createDate 2018-03-21
     */
    Integer updateUiInfoStatus(@Param("uiIdList") String[] uiIdList);

    /**
     * <desc>
     *      设置启用禁用。
     * <desc/>
     *
     * @param  uiId
     * @param  type
     * @return
     * @author shengen.T
     * @createDate 2018-03-26
     */
    Integer setStatus(@Param("uiId")String uiId, @Param("type")Integer type);

    /**
     * <desc>
     *      获取详细信息。
     * <desc/>
     *
     * @param  uiId
     * @return
     * @author shengen.T
     * @createDate 2018-03-22
     */
    OperateUiInfoGetOneVO getOneUiInfo(@Param("uiId") String uiId);

    /**
     * <desc>
     *      获取详细参数的项目信息对象。
     * <desc/>
     *
     * @param  uiId
     * @return
     * @author shengen.T
     * @createDate 2018-03-27
     */
    List<OperateProjectInfoVO> getOneUiProjectInfo(@Param("uiId") String uiId);

    /**
     * <desc>
     *      分页获取UI信息。
     * <desc/>
     *
     * @param  params
     * @return
     * @author shengen.T
     * @createDate 2018-03-22
     */
    List<OperateUiInfoGetPageVO> getPage(Map<String,Object> params);

    /**
     * <desc>
     *      获取总记录数。
     * <desc/>
     *
     * @param  params
     * @return
     * @author shengen.T
     * @createDate 2018-03-22
     */
    Integer getPageCount(Map<String,Object> params);

    /**
     * <desc>
     *      获取项目接口。
     * <desc/>
     *
     * @param  params
     * @return
     * @author shengen.T
     * @createDate 2018-03-23
     */
    List<OperateUiProjectInfoVO> getPageProject(Map<String,Object> params);


    /**
     * <desc>
     *      获取项目总记录数。
     * <desc/>
     *
     * @param  params
     * @return
     * @author shengen.T
     * @createDate 2018-03-23
     */
    Integer getPageCountProject(Map<String,Object> params);
}
